import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QLineEdit
from PyQt5.QtGui import QIcon
from random import randint


class GuessNum(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()
        self.num = randint(1, 100)	# 初始化一个在1-100之间的随机数
        print(self.num)

    def initUI(self):
        self.setGeometry(350, 350, 350, 250)	# 设置窗口大小350×250
        self.setWindowTitle('GuessTheNumber')	# 设置窗口标题：GuessTheNumber
        self.setWindowIcon(QIcon('GuessNum.ico'))	# 设置标题的ICON

        self.bt1 = QPushButton('Guess', self)	# 新建一个Button,名字叫Guess
        self.bt1.setGeometry(115, 155, 120, 40) # 设置按钮的位置和大小，位置是相对于窗口的位置
        self.bt1.setToolTip('<b>ClickHereToGuess</b>') # 创建一个工具提示，鼠标右键停留显示
        self.bt1.clicked.connect(self.showMessage)	# 将按钮点击链接到showMessage

        self.text = QLineEdit('InputNumberHere', self)	# 创建一个QLineEdit对象,内部的默认文本是：InputNumberHere
        self.text.selectAll()   # 默认选中InputNumberHere这个字符串
        self.text.setFocus()    # 将焦点置于文本框中，可以直接输入数字
        # 可以分别注释前两行看不同
        self.text.setGeometry(85, 60, 180, 45)  # 设置位置和大小，位置是相对于窗口的位置

        self.show()

    def showMessage(self):
        guessnumber = int(self.text.text())     # 获取框内的数字

        if guessnumber > self.num:
            QMessageBox.about(self, 'WatchTheResult', 'BigerThanResult')
            self.text.setFocus()
        elif guessnumber < self.num:
            QMessageBox.about(self, 'WatchTheResult', 'SmallerThanResult')
        else:
            QMessageBox.about(self, 'WatchTheResult', 'Bingo!NextRound')
            self.text.clear()   # 清空文本框
            self.num = randint(1, 100)
            print(self.num)
            self.text.setFocus()

    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Confirm', 'Confirm Exit?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)    # 这里可以分别调用一下看看，图标会显示不同
        # reply = QMessageBox.ctitical(self, 'Confirm', 'Confirm Exit?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        # reply = QMessageBox.warning(self, 'Confirm', 'Confirm Exit?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        # reply = QMessageBox.infomation(self, 'Confirm', 'Confirm Exit?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    guessnum = GuessNum()
    sys.exit(app.exec_())

